package com.aizuda.boot.modules.business.permission.provider;

import com.aizuda.boot.modules.business.contract.dto.SingleResponse;
import com.aizuda.boot.modules.business.permission.domain.request.AddPermissionVO;
import com.aizuda.boot.modules.business.permission.domain.request.GetPermissionPageVO;
import com.aizuda.boot.modules.business.permission.domain.request.UpdatePermissionVO;
import com.aizuda.boot.modules.business.permission.domain.response.PagePermissionVO;
import com.aizuda.boot.modules.business.permission.domain.response.PermissionShowVO;
import com.baomidou.mybatisplus.core.metadata.IPage;

/**
 * @author duanyao
 * @date 2022/12/05 18:07
 * @description 权限
 */
public interface PermissionProvider {


    /**
     * 根据权限id获取权限信息
     *
     * @param permissionId 权限id
     * @return
     */
    SingleResponse<PermissionShowVO> getPermission(Long permissionId);

    /**
     * 新增权限
     *
     * @param addPermissionVO
     * @return
     */
    SingleResponse<Void> addPermission(AddPermissionVO addPermissionVO);

    /**
     * 修改权限状态
     * @param permissionId
     * @return
     */
    SingleResponse<Void> enable(Long permissionId);

    /**
     * 修改权限
     *
     * @param updatePermissionVO
     * @return
     */
    SingleResponse<Void> updatePermission(UpdatePermissionVO updatePermissionVO);

    /**
     * 分页查询权限
     *
     * @param page
     * @param vo
     * @return
     */
    SingleResponse<IPage<PagePermissionVO>> pagePermission(IPage<PagePermissionVO> page, GetPermissionPageVO vo);

    SingleResponse<Void> del(Long permissionId);

//    /**
//     * 根据员工id获取员工对应权限信息
//     *
//     * @param employeeId 员工id
//     * @return
//     */
//    SingleResponse<SupportPermissionResponseVO> getPermissionByEmployeeId(@NotNull Long employeeId);

}
